1. Technical Field of the Invention
The present invention relates in general to computer networks, and in particular, to implementing network mutexes in a computer network.
2. Description of Related Art and Objects of the Invention
In many offices and universities around the world, computer networks connect each computer to every other computer in an associated system. Connecting computers provides many benefits. First, it enables fast communication between and among users, e.g., e-mail. Second, software programs can be stored at a central computer and retrieved by individual computers as needed to thereby reduce memory storage requirements at the individual computers. Third, files can be shared between and among various computer users. In other words, one person can work on a document and then save or store it at a central computer. A second person can then request the document from the central computer and continue working on it. Fourth, resources such as databases and communication ports can be shared by all individual computers. This sharing reduces resource duplication and therefore is more economical. In short, computer networks are designed to empower computer users to share programs, information, and computing resources between and among users.
Referring first to FIG. 1, a conventional computer network system 100 is illustrated. The above-described features of computer networks are realized with network systems composed of three principle parts. The first part is composed of one, two, a hundred, or even more computers that are directly interacted with by the computer users. Each computer user and/or corresponding computer are individually or as a pair referred to as a client. First, second, third, fourth, and fifth clients 115, 120, 125, 130, and 135 are shown in FIG. 1. The second part of computer networks is composed of one or more servers, which can centrally store files and programs as well as provide a gateway to resources that are to be shared throughout a portion or all of the network. A server 105 is also shown. The first, second, third, fourth, and fifth clients 115, 120, 125, 130, and 135 are linked to the server 105 via a third part, the operating system (OS) network connections 140.
Each of the first, second, third, fourth, and fifth clients 115, 120, 125, 130, and 135 as well as the server 105 has an operating system, which is the primary software for controlling each computer. In the server 105, a server operating system (OS) 110 controls the operations, including rudimentary file-locking features, of the server 105. The server OS 110 does not, however, provide the ability to lock non-intelligent objects such as communication port 145. The ability to lock out, or more broadly mutually exclude (often abbreviated "mutex"), others from a network resource is critical for many computing functions.
In the conventional computer network system 100, structured query language (SQL) server network connections 150 connect each client to SQL server 155. Note that although the OS network connections 140 and the SQL server network connections 150 are logically different, they may transmit data over the same physical medium. The SQL server 155 is an intelligent object that contains databases and can have its own locking mechanism. For example, the first client 115 can request via an SQL server network connection 150 to lock elements of the SQL server 155 such as tables or rows within tables of a given database. Any subsequent request by another client, such as the second client 120, will be refused or delayed until the first client 115 has released the lock on the particular element of the SQL server 155. Unfortunately, the first client 115 cannot lock the entire SQL server 155.
Additionally, conventional computer networks do not provide any means to lock virtual objects. Even if the first client 115 were able to lock a particular object, a crash or other loss of communication by the first client 115 can render the object unlockable by other clients. In this instance, the first client 115 never relinquishes control of the virtual object, and no other client, including the second client 120, will be able to gain access to the virtual object. Also, it has not been possible to determine which element has locked a network resource, the location of the locking element on the network, or the amount of time the resource has been locked.
Furthermore, prior art locking techniques do not permit the setting of locking priorities, which enables the overriding of existing locks. Also, conventional locking techniques do not allow equivalent elements and applications to share locks.
In summary, mutexes have heretofore not been implemented at the network level. The current invention addresses the above (and other) deficiencies in the prior art by achieving the following (and other) objects of the invention:
An object of the invention is to provide a locking/unlocking mechanism at the network level.
Another object of the invention is to provide a network mutex feature for network objects and resources.
Yet another object of the invention is to implement a network mutex in which the lock is relinquished automatically if the locking element crashes or loses its connection.
A further object of the invention is to implement a network mutex that is applicable to objects and resources such as intelligent objects that have their own locking mechanism, non-intelligent objects that do not have their own locking mechanism, and virtual objects.
Yet a further object of the invention is to implement a network mutex that permits locking priorities and the overriding of existing locks.
A still further object of the invention is to implement a network mutex in which locks can be shared by equivalent elements or applications.